
<?php 
/*

功能：本程序实现将会话数据存入数据库中
开发人员：李坚
时间：2016/4/29

*/
/*****************程序开始********************************************/
$sdbc=null;
//定义打开会话函数
function open_session(){

	global $sdbc;
	$sdbc=mysqli_connect('localhost','root','root','mydatabase');
	return true;
}//结束open_session()
//关闭会话
function close_session(){

	global $sdbc;
	return mysqli_close($sdbc);
}//结束close_session()
//定义读取会话函数
function read_session($sid){

	global $sdbc;
	$q=sprintf('select data from session where id="%s"',mysql_real_escape_string($sdbc,$sid));
	$r=mysqli_query($sdbc,$q);
	if(mysqli_num_rows($r)==1){


		list($data)=mysql_fetch_array($r,MYSQL_NUM);
		return $data;
	}
}//结束 read_session()
//定义新增会话写入数据库函数
function write_session($sid,$data){

	global $sdbc;
	$q=sprintf('REPLACE INTO  session (id,data)  values("%s",%s)',mysqli_real_escape_string($sdbc,$sid),mysqli_real_escape_string($sdbc,$data));
	$r=mysqli_query($sdbc,$q);
	return true;
}//结束 write_session()
//定义销毁会话函数
function destory_session($sid){

	global $sdbc;
	$q=sprintf('delete FROM session where id="%s"',mysqli_real_escape_string($sdbc,$sid));
	$r=mysqli_query($sdbc,$q);
	$_SEESION();
	return true;
}//结束 destroy_session()
//定义垃圾回收机制函数
function clean_session($expire){

	global $sdbc;
	$q=sprintf('delete FROM session where DATE_ADD(last_accssess,INTERVAL %d SECOND)< NOW()',(int)$expire);
	$r=mysqli_query($sdbc,$q);
	return true;
}
//告诉PHP使用会话函数
session_set_save_handler('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'clean_session');
session_start();
